---
title: 短期记忆
description: 基于会话的对话历史，用于即时上下文保留
---

短期记忆使用 LangGraph 的 Checkpointer 系统提供基于会话的对话历史。它自动保留会话内的对话上下文，使智能体能够维持连贯的多轮对话。

## 快速开始

### 基本配置

```python
from langcrew import Crew, Agent
from langcrew.memory import MemoryConfig

# 启用短期记忆
memory_config = MemoryConfig(
    provider="sqlite",
    connection_string="sqlite:///memory.db",
    short_term={
        "enabled": True,
    }
)

crew = Crew(agents=[agent], memory=memory_config)
```

### 配置参数

| 参数                | 类型        | 描述                                  | 默认值  |
| ------------------- | ----------- | ------------------------------------- | ------- |
| `enabled`           | bool        | 启用短期记忆                           | True    |
| `provider`          | str \| None | 存储提供商覆盖（None时继承全局配置）    | None    |
| `connection_string` | str \| None | 连接字符串覆盖（None时继承全局配置）    | None    |

**高级配置：**

```python
# 仅为短期记忆覆盖存储提供商
memory_config = MemoryConfig(
    provider="sqlite",  # 全局提供商
    connection_string="sqlite:///global.db",
    short_term={
        "enabled": True,
        "provider": "postgres",  # 仅为短期记忆覆盖
        "connection_string": "postgresql://localhost/short_term"
    }
)
```

## 工作原理

### 基于线程的会话

短期记忆使用线程 ID 来分隔不同的对话会话：

```python
from langcrew import Crew

crew = Crew(agents=[agent], memory=memory_config)

# 用户 A 的对话
result_a = crew.kickoff(
    inputs={"user_input": "我的名字是 Alice"},
    thread_id="user_alice"
)

# 用户 B 的对话（独立的记忆）
result_b = crew.kickoff(
    inputs={"user_input": "我的名字是 Bob"}, 
    thread_id="user_bob"
)

# Alice 的后续对话（记住她的名字）
result_a2 = crew.kickoff(
    inputs={"user_input": "我的名字是什么？"},
    thread_id="user_alice"  # 相同的线程 ID
)
```

### 自动上下文注入

短期记忆自动注入相关的对话历史：

```python
# 第一条消息
crew.kickoff(
    inputs={"user_input": "我喜欢意大利菜"},
    thread_id="conversation_1"
)

# 第二条消息 - 智能体记住第一条
crew.kickoff(
    inputs={"user_input": "我喜欢什么类型的食物？"},
    thread_id="conversation_1"  # 相同线程 = 记住上下文
)
# 响应："您提到您喜欢意大利菜"
```

## 使用场景

### 客户支持

在支持会话中维护对话上下文：

```python
# 客户支持配置
memory_config = MemoryConfig(
    provider="postgresql",
    connection_string="postgresql://user:pass@localhost:5432/support_db",
    short_term={
        "enabled": True,
    }
)

support_agent = Agent(
    role="客户支持代理",
    goal="使用对话上下文提供有用支持",
    backstory="您记住对话历史以提供上下文帮助"
)

crew = Crew(agents=[support_agent], memory=memory_config)

# 支持会话
crew.kickoff(
    inputs={"user_input": "我的订单 #12345 还没到"},
    thread_id="support_session_789"
)

crew.kickoff(
    inputs={"user_input": "它应该什么时候到？"},
    thread_id="support_session_789"  # 记住订单 #12345
)
```

### 教育辅导

在辅导会话中跟踪学习进度：

```python
# 教育会话配置
memory_config = MemoryConfig(
    provider="sqlite",
    connection_string="sqlite:///education.db",
    short_term={
        "enabled": True,
    }
)

tutor_agent = Agent(
    role="数学导师",
    goal="基于之前的解释教授数学概念",
    backstory="您记住已涵盖的概念和学生的理解水平"
)

crew = Crew(agents=[tutor_agent], memory=memory_config)

# 辅导会话
student_id = "student_123"
crew.kickoff(
    inputs={"user_input": "解释线性方程"},
    thread_id=f"student_{student_id}"
)

crew.kickoff(
    inputs={"user_input": "现在告诉我如何解 x + 5 = 10"},
    thread_id=f"student_{student_id}"
)
```

## 存储提供商

短期记忆支持所有 LangCrew 存储提供商：

### 内存模式（开发）

```python
memory_config = MemoryConfig(
    provider="memory",  # 快速，无持久化
    short_term={"enabled": True}
)
```

### SQLite（单用户/开发）

```python
memory_config = MemoryConfig(
    provider="sqlite",
    connection_string="sqlite:///memory.db",
    short_term={"enabled": True}
)
```

### PostgreSQL（生产）

```python
memory_config = MemoryConfig(
    provider="postgresql",
    connection_string="postgresql://user:pass@localhost:5432/memory_db",
    short_term={"enabled": True}
)
```

## 故障排除

### 记忆未持久化

- 确保跨对话使用相同的 `thread_id`
- 验证数据库连接和权限
- 检查 checkpointer 是否正确配置

### 上下文未注入

- 确认 short_term 配置中 `enabled: True`
- 验证智能体使用相同的 crew 实例

### 性能问题

- 为数据库提供商使用连接池
- 单用户应用考虑使用 SQLite

## 下一步

- **[长期记忆](/zh/guides/memory/long-term)** - 持久知识存储
- **[存储配置](/zh/guides/memory/storage)** - 配置存储后端
- **[内存概念](/zh/concepts/memory)** - 理解内存架构
